package com.sudo.dao.admin.model.bo.sysconfig;

import com.sudo.common.utils.LocalDateTimeUtil;
import com.sudo.common.validenum.EnumValue;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotBlank;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;

@Data
public class SysUserRegistBO {

    // 注册角色
    @NotBlank(message = "注册角色不能为空")
    private String regist_role;

    // 过期角色
    @NotBlank(message = "过期角色不能为空")
    private String expiry_role;

    // 使用状态（启用禁用ON/OFF）
    @NotBlank(message = "状态代码不能为空")
    @EnumValue(strValues = {"ON","OFF"},message = "模块状态参数不正确")
    private String status;

    // 默认过期时间（分钟）
    @Range(min = 10,max = 60*24*3,message = "默认过期时间须在10分钟~3天之内")
    private Integer def_expiry_time;

    // 过期提示时间（如果为30，则剩余30分钟需要提示用户过期）
    @Range(min = 10,max = 60*24*3,message = "过期提醒时间须在10分钟~3天之内")
    private Integer expiry_tip_time;

    // 更新人
    private String update_by;

    // 更新时间
    private String update_time;

    public Map<String,String> bean2Map(String sessionUser,SysUserRegistBO sysUserRegistBO) {
        sysUserRegistBO.setUpdate_by(sessionUser);
        sysUserRegistBO.setUpdate_time(LocalDateTimeUtil.getStandardDateTimeStr());

        Map<String, String> stringMap = new HashMap<>();
        Field[] declaredFields = this.getClass().getDeclaredFields();
        try {
            for (Field field : declaredFields) {
                stringMap.put(field.getName(), String.valueOf(field.get(sysUserRegistBO)));
            }
        } catch (IllegalAccessException e) {
            throw new RuntimeException("SysUserRegistBO#bean2Map 异常", e);
        }
        return stringMap;

    }
}
